// import com.alibaba.druid.sql.SQLUtils;
// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLObject;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;

// import java.util.Collections;
// import java.util.List;

#include "OracleSysdateExpr.h"
#include "../../../../SQLUtils.h"
#include "../../../../ast/SQLObject.h"
#include "../../visitor/OracleASTVisitor.h"

string_ptr OracleSysdateExpr::getOption()
{
  return option;
}

void OracleSysdateExpr::setOption(string_ptr option)
{
  this->option = option;
}

// @Override
void OracleSysdateExpr::accept0(OracleASTVisitor_ptr visitor)
{
  visitor->visit(SharedObject(OracleSysdateExpr));
  visitor->endVisit(SharedObject(OracleSysdateExpr));
}

SQLObject_ptr OracleSysdateExpr::clone()
{
  SQLObject_ptr clone_tmp = std::shared_ptr<OracleSysdateExpr>(new OracleSysdateExpr());
  std::shared_ptr<OracleSysdateExpr> x = std::dynamic_pointer_cast<OracleSysdateExpr>(clone_tmp);
  // OracleSysdateExpr x = new OracleSysdateExpr();
  x->option = option;
  return x;
}

// @Override
SQLObject_list_ptr OracleSysdateExpr::getChildren()
{
  SQLObject_list_ptr tmp = std::make_shared<std::list<SQLObject_ptr>>();
  return tmp;
}

string_ptr OracleSysdateExpr::toString()
{
  return SQLUtils::toOracleString(SharedObject(OracleSysdateExpr));
}
